home *** CD-ROM | disk | FTP | other *** search
- Updating to Geneva release 003 (1.02):
- -------------------------------------
-
- To update to the new version, follow these steps:
-
- 1. If you intend to keep the old version around for some reason, be sure
- to make a backup of all files.
-
- 2. Make a backup of your original Geneva disk!
-
- 3. Run the enclosed patch program, PATCH003.PRG.
-
- 4. After the patch has successfully completed, run the INSTALL.PRG on the
- modified disk. It will re-install all of the new files. If you get error
- message saying that the file already exists, just let the program
- overwrite the old files.
-
- If you have problems with the patch
- -----------------------------------
-
- If, for some reason, the patch program does not run properly you can send
- your original Geneva disk back to us along with a check for $5 + $2 to
- cover return shipping. We will rewrite the disk with the most recent
- version for you and return it to you by mail. Send to:
-
- Gribnif Software
- P.O. Box 779
- Northampton, MA 01061
-
-
- Files affected
- --------------
-
- INSTALL.SCR
- INSTALL.PRG
- TASKMAN\TASKMAN.ACC
- TASKMAN.RSC
- GENEVA\GENEVA.PRG
- GENEVA.CNF
- HELP\GNVAHELP.PRG
- GENEVA.HLP
- TASKMAN.HLP
- PROGRAM\GNVA_DB.PRG
- NEW_AES.H
- NEW_GEM.LIB
- XWIND.H
- XWINDGFA.SFX *
- TASKMAN\TASKMAN.C
- TASKMAN.H
- TASKMAN.HRD
-
- * To extract XWINDGFA.LST, copy it to another disk and change its name
- to XWINDGFA.TOS. Then, run this program and the file will self-extract.
-
-
- Geneva Revision Notes 12/31/93
-
- Notes:
-
- If you want to use That's Write's desk accessories with it, you will have
- to set That's Write to be single-tasking. This is due to a shortcoming
- in the method that desk accessories use to communicate with That's
- Write. Newer versions of the That's Write desk accessories will address
- this problem.
-
- Page Assistant's Index dialog will show some underlines in places where
- they should not be. This can only be avoided by turning the "Auto
- keyboard equivs" option off for the program. This is true as of version
- 2.05.
-
- Changes since 9/29/93:
- ---------------------
-
- INSTALL:
-
- INSTALL.SCR will now allow you to set the parameters for SETMOUSE.
-
- INSTALL.PRG will no longer have redraw errors when run under Geneva.
-
- TASKMAN:
-
- Added a new Misc. Option to allow the video resolution in GENEVA.CNF to be
- ignored, in favor of the one in NEWDESK/DESKTOP.INF. This means that you
- can continue to use a boot manager like XBoot to choose video
- resolutions using the same method you always used.
-
- The main window can now be "iconized" by clicking on the "delta" gadget.
- This shrinks any open windows to a single "icon" window.
- Double-clicking on the icon window's contents will reopen the Task
- Manager.
-
- The Window Options dialog now accepts any Speedo GDOS font, and any
- other monospaced GDOS (bitmaped or scalable) font which has all 255
- characters. This font is used when drawing menu bars, windows and
- dialogs. There are a few restrictions, though:
- o If you use Speedo GDOS, it must be version 4.11 or newer.
- o When using a Speedo font, Geneva attempts to remap the characters
- used in window gadgets (like the Full box, the Close box, etc.) While
- this remapping does work with most Speedo fonts, some fonts (like the
- Monospace 821 font) do not have the characters in the right locations
- for this translation, and incorrect characters will appear in the
- gadgets when they are drawn. This is unavoidable.
- o Speedo GDOS does not do a very good job of supporting the italics and
- bold special effects which are found in some of Geneva's dialogs.
- o Bitmapped fonts can be used, with the same limitations as before.
- They can even be used with Speedo GDOS.
-
- The Task Manager now uses a more exact method for drawing the contents of
- the Sample Window in the Window Options dialog. The current window
- gadget colors are also used.
-
- The objects which make up the Sample dialog in the Dialog Options dialog
- can be clicked on in order to switch object types.
-
- The Outer Box in the Dialog Options sample is now always drawn correctly.
-
- GENEVA:
-
- The version number and date are now displayed when Geneva runs from the
- AUTO folder.
-
- The icons in alerts will be colored if there are at least 16 colors
- available in the current video mode.
-
- Item selector: If the path is very long, only the first 10 characters of
- the template will be shown when the path gets updated. This way you can
- always see at least the last 16 chars of the full path.
-
- You can now press [Alt][\] to move to the root directory in the item
- selector.
-
- Using GDOS fonts within TEDINFO objects is now supported, as in AES 4.1.
- Note that if you click on an editable field containing a GDOS font with
- the mouse, the edit cursor will always be positioned to the end of the
- field. Actually positioning to the character under the mouse would be
- too computationally intensive.
-
- Added a new type of wildcard to the item selector. The ! can be used for
- inversion ("not") of the next item in a string. If the next item is just
- a regular character, then that one letter will be inverted; if the next
- item is a {} or [] bracketed expression, then the meaning of that
- expression will be inverted. Examples:
-
- *.prg Ending in PRG
- *.!abc *.?BC, excluding *.ABC
- *.ab!c *.AB?, excluding *.ABC
- *.!a!bc *.??C, excluding *.ABC
- [a-d]*.* Starting with A, B, C, or D
- ![a-d]*.* Anything not starting with A, B, C, or D
- *.{prg,prx} Ending in PRG or PRX
- *.!{prg,prx} Anything not ending in PRG or PRX
-
- Any number of !'s can be used within a wildcard. The effect is that the
- expressions are negatively added together. For example:
-
- !{stalker,neodesk?}.!{ac[cx],rsc}
-
- Matches anything but:
-
- stalker.acc stalker.acx stalker.rsc
- neodesk?.acc neodesk?.acx neodesk?.rsc
-
- However, NEODESK.ACC will match, since it does not have a character
- between the "k" and the period.
-
- The ! can be used in the main item selector path, and also in the Find
- dialog.
-
- Added a new flag to allow the video resolution in GENEVA.CNF to be
- ignored, in favor of the one in NEWDESK/DESKTOP.INF.
-
- A program flag has been added for GENEVA. This allows you to change the
- name of the Geneva Manager in the Desk menu (and also its Activation
- key) by using the Task Manager.
-
-
- Other changes in Geneva:
-
- Fixed a typo that prevented the use of multiple [] or {} bracketed
- expressions in a wildcard.
-
- Using function keys to access the paths in item selector works again.
-
- Fixed a problem which caused characters to disappear in editable fields
- which were created with the WERCS resource contruction program.
-
- Geneva now works correctly when:
- o Run on a Moniterm card while a color monitor or no monitor at all
- is plugged into the Atari video port.
- o Using Crazy Dots board running NVDI in 2-color mode.
- o Using a GENEVA.CNF file which was saved while using a TTM195
- monitor with another resolution. (I could not test this one)
-
- Added a check to avoid a bug in TOS 2.01-2.05 which sometimes causes a
- monochrome screen to "wrap around" several pixels.
-
- Fixed the GEM.CNF "run" command to correctly pass parameters to the
- program to be run.
-
- Fixed a typo that prevented the windows in GNVAHELP and GNVA_TOS from
- scrolling quickly when the scroll bar was dragged.
-
- Atari-style 3D buttons are now drawn much more like the way AES 4.0 does.
- Furthermore, objc_find() takes an OUTLINED attribute into account for
- background objects.
-
- Fixed wind_get( X_WF_xSPLIT.
-
- Setting a new window split location with wind_set( X_WF_xSPLIT now causes
- a redraw of the window areas.
-
- A horizontally split window will now always at least have an empty
- vertical scroll bar. The same goes for a vertical split/horiz scroll.
-
- Fixed wind_calc() with HSLIDE, LFARROW, RTARROW, VSLIDE and nothing else.
-
- In release 002, Geneva would try to keep track of how many times an
- application had turned the mouse on or off, and then take this into
- account when making a different application the foreground one. This
- cannot always work because of screen acceleration programs, and has
- therefore been removed.
-
- Clicking on the small text in the item selector's Find dialog will no
- longer cause a crash. Also, the "Find Next" button will not sometimes
- remain selected when it should not.
-
- Multi-color icons work again.
-
- appl_read() again works correctly when reading more than 16 bytes. This
- used to cause the Miscellaneous Options help to crash.
-
- The name and serial number are centered in About Geneva.
-
- Double-clicking on the move box of an alert or the About Geneva dialog
- will now work correctly.
-
- Added a hack to avoid a bug in the Falcon TOS that would cause some
- programs to think that the wrong system font was being used.
-
- The Applications list should no longer lockup unexpectedly.
-
- Sub-submenus are now always positioned correctly.
-
- The bottom line of popup menu will always be drawn correctly.
-
- Added a check to avoid an error made by at least one program: passing an
- mn_scroll=1 value to menu_popup() when 1 is not a child of the parent
- scroll box will no longer cause a crash.
-
- Moving the mouse rapidly from a pulldown menu to a submenu will no longer
- result in the submenu disappearing if the mouse happens to pass over
- another menu entry. The menu display delay is used for this.
-
- The event_multi() mode X_MU_DIALOG can now be used at the same time as
- MU_BUTTON and/or MU_KEYBD.
-
- If another program uses the exec_os variable and obeys the XBRA protocol,
- Geneva will not complain that it cannot install itself.
-
- When a program redefines the tree of the desktop and uses G_USERDEF
- objects in the tree, strange results will no longer occur if the
- program quits without first unsetting the new desktop. (INSHAPE)
-
- When copying in the item selector, using the OK button when a filename
- conflict occurs will always result in an overwrite of the old file.
- Previously, this would only sometimes happen. Also, the file count is
- always displayed, and is updated properly when Skipping a conflict.
- Furthermore, you can press the OK button when a folder conflict occurs,
- in order to use the existing folder.
-
- Programs which use GEMDOS text output (and other GEMDOS-level standard
- file handle operations) will now work on the Falcon with TOS versions
- 4.00-4.04. (Technically speaking, these versions of TOS do not copy the
- standard file handles of the parent process to the child when a Pexec(5)
- is performed.)
-
- An incompatibility with TOS 4.00-4.04 which would result in the inability
- to run any more programs, after a large number had been run, has been
- fixed. This tended to show up mostly when changing resolutions.
-
- If a program requests an event of zero mouse clicks, it no longer gets
- a return value of one, it gets zero.
-
- The About Geneva dialog is now more resolution/font size independent.
-
- Now works completely with the Screenblaster. When you tell Geneva to
- change resolutions, you also get the Screenblaster video resolution
- menu.
-
- Fixed objc_find() and mouse rectangle events so that they no longer
- consider a pixel one past the lower right or bottom edge.
-
- A program's message buffer is no longer modified if it does not receive
- any message events. (PAGEASIT)
-
- The objc_draw() call will correctly affect clipping if either the width or
- the height of the rectangle passed to the function is zero. Previously,
- there was a chance this would not happen. (PAGEASIT)
-
- If a program asks for mouse events with 0 clicks, the report it gets from
- Geneva when the mouse is clicked will have the number of clicks set to
- 0.
-
- Popup menus created with menu_popup() can now have submenus. Also, put a
- check in to prevent selecting a disabled submenu starter. (STFAX)
-
- Fixed a bug in the assignment of automatic keyboard equivalents. Now, exit
- buttons are always scanned first, as they should be.
-
- wind_get( WF_OWNER ) now correctly reports the handles of the next and
- previous windows in the stack.
-
- The width of the MOVER bar in a window with a SMALLER gadget is now
- correct.
-
- An object with the extended type X_HELP is no longer considered for an
- automatic keyboard equivalent.
-
- Programs which incorrectly assume that their own application ID is always
- 0 will work correctly if using appl_write() to send a message to
- themselves, even in multitasking mode (assuming there is no
- single-tasking application in memory, since it would have ID 0 and
- therefore get the message; the best solution for this problem is simply
- to run the offending program in single-tasking mode at all times).
- (STDCAT)
-
- appl_getinfo(0) and (1) now return the point size (rather than the pixel
- height) of the fonts. Modes (11) through (14) are now also supported.
-
- Also in the item selector: when it is first called, the number of items
- and bytes in the current directory are now always displayed.
-
- If a program changes the clipping array of Geneva's VDI handle, this will
- no longer cause redraws to fail unexpectedly later on. (some very bad
- programming in TWRITE3).
-
- It is now possible to change the size and position of a window which has
- been created but not opened, by using wind_set(WF_CURRXYWH). This just
- makes it easier to use windowed dialogs.
-
- Having the Limit window handles option on for a program which uses
- Geneva's dialogs within windows (like TASKMAN) will work properly.
-
- Made a few changes which allow running a program within another program by
- way of Pexec() to work better. (SBPRO,1ST_WORD,QWK)
-
- The version reported in the Gnva cookie really is correct now.
-
- Window colors are now set for a window whose tree is redefined with
- x_wind_tree().
-
- If a program (incorrectly) uses evnt_button() with a mask of 1 and a state
- of 2, Geneva will no longer lock up. (DATMAN) The state is now always
- internally AND'ed with the mask.
-
- Fixed a bug which would sometimes cause a crash when a program tried to
- open a new VDI workstation and failed. (WORKS)
-
- Programming additions:
- ---------------------
-
- wind_get() modes X_WF_HSPLIT (0x1700) & X_WF_VSPLIT (0x1800)
-
- The manual does not document the parameters returned by this call, and
- it differs from what is passed in the equivalent wind_set().
-
- wi_gw1: Split bar position
- wi_gw2: Size, in pixels, of the upper (or left) window region
- wi_gw3: Size of the lower (or right) window region
-
- evnt_mesag() return X_WM_OBJECT (0xE900)
-
- This message type is returned to an application when it uses wind_set()
- mode X_WF_OBJHAND to affect the manner in which window gadgets are
- handled.
-
- If an application receives this message, it is because the object tree
- handler routine instructed Geneva not to process the mouse click on a
- window gadget as a normal event. Instead, a special message is returned
- to the application:
-
- Word 0: 0xE900
- Word 1: Application ID
- Word 2: 0
- Word 3: Handle of the window containing the object
- Word 4: Object tree index of the object which was clicked
-
- Note that in order for Geneva to determine that the mouse has been
- clicked on an object in a window's tree structure, it must be of type
- EXIT or TOUCHEXIT. Geneva's default window gadgets already have these
- attributes set correctly.
-
- See also: wind_set() mode X_WF_OBJHAND.
-
- wind_get()/wind_set() mode X_WF_OBJHAND (0x1F00)
-
- When an application wants to intercept some or all of the button events
- that would otherwise be interpreted as Geneva to mean that a window
- gadget has been clicked on, this wind_set() mode can be used to provide
- Geneva with the address of a routine which instructs Geneva to either
- ignore the event, or to process it as normal. This allows the programmer
- to redefine the operation of window gadgets, and to define his own
- actions for new gadgets which have been added with the x_wind_tree()
- function.
-
- The routine is passed the handle of the window containing the object and
- the index of the object within the window's object tree. If the user
- routine returns a 0, then Geneva will generate an X_WM_OBJECT message
- and send it to the application. If the routine returns a 1, then Geneva
- will process the action as a normal event and act accordingly.
-
- IMPORTANT: The application's object handler routine must not use any AES
- functions.
-
- The following example declares an object handler which allows the action
- of the vertical scroll bar to be redefined:
-
- /* change this to "int cdecl objhand..." for Pure C */
- int objhand( int handle, int obj )
- { /* handle parameter is not used */
- if( obj==WGVSMLSL ) return 0; /* this is the vertical slider */
- return 1; /* otherwise, process as normal */
- }
-
- main()
- {
- int handle, message[8];
-
- handle = wind_create( NAME|MOVER|VSLIDE|UPARROW|DNARROW,
- 50, 50, 150, 150 );
- if( handle > 0 )
- {
- wind_set( handle, X_WF_OBJHAND, &objhand );
- wind_open( handle, 50, 50, 150, 150 );
- }
-
- ...
-
- evnt_mesag( message );
- switch( message[0] )
- {
- case X_WM_OBJECT:
- if( message[3]==handle && message[4]==WGVSMLSL )
- /* do something new with the slider */
- }
- }
-
- If wind_set( X_WF_OBJHAND ) is passed a NULL pointer, instead of a
- pointer to a function, object handling is discontinued for that window.
-
- Note that in order for Geneva to determine that the mouse has been
- clicked on an object in a window's tree structure, it must be of type
- EXIT or TOUCHEXIT. Geneva's default window gadgets already have these
- attributes set correctly.
-
- wind_get() can also be used to get a pointer to the current object
- handler routine. A NULL pointer means that there is no object handler
- defined.
-
- wind_get()/wind_set() mode X_WF_DIALEDIT (0x2000)
-
- When a windowed dialog has been defined with wind_set() mode
- X_WF_DIALOG, these two options can be used to get or set the index of
- the object which currently has the edit cursor. This can be helpful when
- an application changes the contents of a text field while the dialog is
- still displayed, or when it needs to hide the object that currently has
- the edit cursor.
-
- wind_get( X_WF_DIALEDIT ) will return the index of the object which
- currently has the edit cursor in the "wi_gw1" parameter, and the
- position of the edit cursor within the object's text in the "wi_gw2"
- parameter.
-
- wind_set( X_WF_DIALEDIT ) changes the object ("wi_sw1") and the edit
- index ("wi_sw2"). If the object is 0, then the edit cursor will simply
- be turned off; otherwise it will be moved to the new object. If the
- index is 0, the cursor will be positioned before the leftmost character
- in the field; if it is a number > 0, it will be further to the right. If
- the index is -1, then the cursor will be automatically moved to the
- rightmost position.
-
- New extended OBJECT types X_USRDEFPRE (90) and X_USRDEFPOST (91)
-
- It is sometimes desirable to change the appearence of an object
- slightly, but using a G_USERDEF object would necessitate putting a lot
- of extra code into the user routine, since a G_USERDEF object cannot
- have any text, fill, or border. They have to be drawn by the user
- routine, or not at all.
-
- Geneva provides two new extended object types which allow an object to
- be modified or have its appearence altered, while still having the same
- opportunity to be drawn like a normal object.
-
- If bits 12-15 of an object's ob_state are 9
- ((ob_state&X_MAGMASK)==X_MAGIC) and the high byte of the ob_type is
- either 90 (X_USRDEFPRE) or 91 (X_USRDEFPOST), then the ob_spec of the
- object is assumed to contain a pointer to a USERBLK structure. This is
- much like a normal G_USERDEF object, except that the ub_parm member of
- the USERBLK structure must contain the value which would have been in
- ob_spec if the object was not a G_USERDEF.
-
- Since this may sound a little confusing, the following example can be
- used. It defines a G_BOXCHAR object which has its character increased by
- 1 every time the object is drawn:
-
- /* contains the code which increments the character and
- the old ob_spec value */
- USERBLK user;
- /* start with a G_BOXCHAR object, with the character '1',
- black border of thickness of 2, black text, patterned */
- OBJECT ob = { -1, -1, -1, G_BOXCHAR, 0, 0,
- ((long)'1'<<24)|(2L<<16)|(1<<12)|(1<<8)|(2<<4)|1,
- 50, 50, 25, 25 };
-
- int cdecl inc_char( PARMBLK *p )
- {
- char c;
-
- /* extract the character, which is in the MSB of the
- ub_parm element of "user" */
- c = ((user.ub_parm>>24) & 0xFF) + 1;
- /* now put it back */
- user.ub_code = (c<<24L) | (user.ub_parm & 0xFFFFFFL);
- /* return the current state */
- return p->pb_currstate;
- }
-
- void draw_it(void)
- {
- objc_draw( &ob, 0, 0, 50, 50, 25, 25 ); /* draw */
- Bconin(2); /* wait for keypress */
- }
-
- main()
- {
- /* start by drawing the object normally */
- draw_it();
- /* now, set up the USERBLK */
- user.ub_code = &inc_char; /* function */
- user.ub_parm = ob.ob_spec; /* old ob_spec of object */
- ob.ob_type |= X_USRDEFPRE<<8 /* extended ob_type */
- ob.ob_state |= X_MAGIC; /* set magic number */
- ob.ob_spec.userblk = &user; /* set ob_spec */
- /* now, draw it a few times and watch the number go up */
- draw_it(); draw_it(); draw_it(); draw_it();
- }
-
- An X_USRDEFPRE function is called before the object is drawn. In
- contrast, an X_USRDEFPOST function is called after the object's
- contents have been drawn, but before any ob_state effects are
- processed.
-
-